＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

                        PC-FXGAオーサリングソフトウェア
                    『ＧＭＡＫＥＲ』スタータキット(Ver.1.1)
                           ”ＬＩＢＡＳＬ．Ａ”の解説

                                        日本電気ホームエレクトロニクス株式会社
                                                        １９９６年　５月３０日

＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

目次

第１章  はじめに

第２章  SCT 生成関数
２．１  Simple Sprite                                 ASLMakeSimpleSprite
２．２  Simple Sprite(with Z)                         ASLMakeSpriteWithZ
２．３  Zoom Sprite                                   ASLMakeZoomSprite
２．４  Rotate Sprite                                 ASLMakeRotateSprite
２．５  Zoom and Rotate Sprite(With Z)                ASLMakeZoomRotateSprite
２．６  Quadrangle Sprite(With Z)                     ASLMakeQuadrangleSprite

第３章  テーブル書き込み関数
３．１  Set Sprite Control Table                      ASLSetSpriteTable
３．２  Set Parameter Table                           ASLSetParameterTable

第４章  その他の関数
４．１  Change H and V Flip                           ASLChangeHVFlip
４．２  Change Z Value                                ASLChangeZ
４．３  Change Collision Detection Flag               ASLChangeCD
４．４  Clear Collision Detection Result              ASLClearCDResult
４．５  Sense Collision Detection Result              ASLSenseCDResult
４．６  Set Sprite Clip Window                        ASLSetSpriteWindow
４．７  Execute Sprite                                ASLExecuteSprite
４．８  Synchonize                                    ASLSync
４．９  Wait for Swap                                 ASLWaitForSwap

＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

第１章  はじめに

ASLはHuC6273のために書かれたグラフィックスライブラリです。ASLはFARLの機能の一
部を利用しているため、ASLを使用するにはFARLを同時にリンクする必要があります。

HuC6273のスプライト機能は非常に柔軟性が高く全部の機能を網羅する事は困難です。
ASLの目的は、HuC6273のスプライト機能のうち、拡大・縮小や台形変形などの比較的使
用頻度の多いと思われる機能を簡単に利用できるような関数群を用意し、またソース
コードを提供することによってHuC6273のスプライト機能の使用法を学んでいただく
ことにあります。

ASLはテクスチャ・バッファ上に置かれるSCT(Sprite Control Table)及びスキャン・パ
ラメータ・テーブルに設定するパラメータを生成します。パラメータはユーザが与える
バッファ領域にいったん格納され、別に用意したテーブル書き込み関数によってまとめ
て設定することができます。SCT及びスキャン・パラメータ・テーブルの詳細、スプラ
イトの詳しい動作などについては『HuC6273の解説』の「2.1 スプライト」の章および
『HuC6273スプライト補足』を参照して下さい。

＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

第２章  SCT生成関数

SCTで使用する構造体は次のように定義されています。


typedef struct {
        unsigned short  head;
        unsigned short  cntl;
        unsigned short  dsp_x_pos;
        unsigned short  dsp_y_pos;
        unsigned short  dsp_xy_size;
        unsigned short  src_xy_pos;
        unsigned short  z;
        unsigned short  src_xy_size;
        short           src_x_off;
        short           src_y_off;
        short           src_x_scan;
        short           src_y_scan;
        unsigned short  pt_bank_sel;
        unsigned short  pt_off_addr;
        unsigned short  reserved1;
        unsigned short  reserved2;
} ASLSct;

各関数で生成されるSCTを格納するバッファのための構造体です。個々のフィールドの
詳細は『HuC6273の解説』の「2.1 スプライト」の章および『HuC6273スプライト補足』
を参照して下さい。


typedef struct{
        short           x_off;
        short           y_off;
        short           x_scan;
        short           y_scan;
}ASLPt;

ASLMakeQuadrangleSprite関数で生成されるスキャン・パラメータ・テーブルを格納す
るバッファのための構造体です。個々のフィールドの詳細は『HuC6273の解説』の
「2.1 スプライト」の章および『HuC6273スプライト補足』を参照して下さい。


typedef struct {
        short           bank;
        short           x_pos;
        short           y_pos;
        short           x_size;
        short           y_size;
        short           x_hot;
        short           y_hot;
} ASLSource;

描画するスプライトパターンがテクスチャ・バッファのどの位置にあるかを示す構造体
です。個々のフィールドの詳細は以下のとおりです。

bank    パターンのあるテクスチャ・バッファのバンク番号
x_pos   パターンの左上の頂点のX座標 (0〜255)
y_pos   パターンの左上の頂点のY座標 (0〜255)
x_size  パターンのX方向の大きさ (1〜256)
y_size  パターンのY方向の大きさ (1〜256)
x_hot   パターンを描画・拡大・縮小・回転させる時の中心点のX座標
        (x_pos からの相対座標)
y_hot   パターンを描画・拡大・縮小・回転させる時の中心点のY座標
        (y_pos からの相対座標)


typedef struct {
        short           dstXt;
        short           dstWt;
        short           dstXb;
        short           dstWb;
        short           dstY;
        short           dstH;
        unsigned short  ptBank;
        unsigned short  ptOffAddr;
} ASLQuadrangleParameter;

ASLMakeQuadrangleSprite関数に与える変形パラメータをセットする構造体です。個々
のフィールドの詳細は以下のとおりです。


dstXt      変形されたスプライトの左上の頂点のX座標
           座標(dstXt,dstY)がパターンの(x_pos,y_pos)に対応します。
dstWt      変形されたスプライトの左上の頂点から右上の頂点までの幅
           座標(dstXt+dstWt,dstY)がパターンの(x_pos+x_size,y_pos)に対応します。
dstXb      変形されたスプライトの左下の頂点のX座標
           座標(dstXb,dstY+dstH)がパターンの(x_pos,y_pos+y_size)に対応します。
dstWb      変形されたスプライトの左下の頂点から右下の頂点までの幅
           座標(dstXb+dstWb,dstY+dstH)がパターンの(x_pos+x_size,y_pos+y_size)
           に対応します。
dstY       描画するスプライトの上底のY座標
           -256〜255の範囲で指定して下さい。
dstH       描画するスプライトの上底から下底までの高さ
           1〜256の間で指定して下さい。
ptBank     スキャン・パラメータ・テーブルをテクスチャ・バッファ上に置く時のバ
           ンク番号
ptOffAddr  スキャン・パラメータ・テーブルをテクスチャ・バッファ上に置く時のア
           ドレス。

ptBank と ptOffAddr は、ASLMakeQuadrangleSprite関数がSCTにパラメータとしてセッ
トするためにのみ使用されます。スキャン・パラメータ・テーブルをテクスチャ・バッ
ファ上に実際に書き込むのには ASLSetParameterTable関数を使用します。


■２．１  Simple Sprite

《名称》
ASLMakeSimpleSprite

《形式》
#include <farl.h>
#include <asl.h>
void ASLMakeSimpleSprite(ASLsource *src, short dstX, short dstY, ASLSct *sct)

《パラメータ》
src  :  描画するスプライトパターンの位置を表す構造体へのポインタ
dstX :  スプライトを描画する位置のX座標
dstY :  スプライトを描画する位置のY座標
sct  :  生成したSCTを格納するバッファへのポインタ

《解説》
src が示すパターンを（拡大・縮小・回転などを行なわず）単純に描画するSCTを、sct
が示すバッファに生成します。

(dstX, dstY) は (src->x_hot, src->y_hot) が示すテクセルに対応します。
sct->dsp_x_pos と sct->dsp_y_pos は次のようにセットされます。

    sct->dsp_x_pos = dstX - src->x_hot;
    sct->dsp_y_pos = dstY - src->y_hot;

したがって、

    -512 ≦ ( dstX - src->x_hot ) ＜ 511
    -256 ≦ ( dstY - src->y_hot ) ＜ 255

となるようにパラメータを指定する必要があります。

この関数で生成したSCTは ASLChangeZ関数によってZ値比較やZ値の書き込みを有効にで
きませんので注意して下さい。Z値の操作を行なう場合には ASLMakeSpriteWithZ 関数
を利用して下さい。

※ asl.h をインクルードする前にシンボル ASL_USE_MACRO を定義すると、この関数は
   マクロになります。関数にした場合は関数呼びだし・戻りのためのオーバーヘッド
   がかかりますので、差し支えない限りマクロで使う事を推奨します。

《戻り値》
なし


■２．２  Simple Sprite(with Z)

《名称》
ASLMakeSpriteWithZ

《形式》
#include <farl.h>
#include <asl.h>
void ASLMakeSpriteWithZ(ASLsource *src, short dstX, short dstY,
                       unsigned short zval, Bool zcmp, Bool zwen, ASLSct *sct)

《パラメータ》
src  :  描画するスプライトパターンの位置を表す構造体へのポインタ
dstX :  スプライトを描画する位置のX座標
dstY :  スプライトを描画する位置のY座標
zval :  書き込む Z値 (0x0000〜0xffff)
zcmp :  Z値比較を行うかどうかのフラグ (False または True)
zwen :  Z値の書き込み許可フラグ (False または True)
sct  :  生成したSCTを格納するバッファへのポインタ

《解説》
ASLMakeSimpleSpriteと同様に、src が示すパターンを（拡大・縮小・回転などは行な
わず）単純に描画するSCTを、sct が示すバッファに生成します。

ASLMakeSimpleSpriteとの違いは、zval、zcmp、zwen をSCTにセットすることです。こ
こで生成されたSCTによるスプライト描画時には以下の動作が起こります。

zcmp が True の場合、すでにZバッファに書き込まれているZ値と zval が比較され、
zvalの方が小さい場合にはピクセル値とZ値は書き込まれません。False の場合は、比
較をせずに無条件にピクセル値とZ値が書き込まれます。

Z値が実際にZバッファに書き込まれるかどうかは zwen で決まります。zwen が True
の場合、ピクセル値がディスプレイ・バッファに書き込まれると共にZ値 zval が
Zバッファに書き込まれます。False の場合は書き込まれません。

※ asl.h をインクルードする前にシンボル ASL_USE_MACRO を定義すると、この関数は
   マクロになります。関数にした場合は関数呼びだし・戻りのためのオーバーヘッド
   がかかりますので、差し支えない限りマクロで使う事を推奨します。

《戻り値》
なし


■２．３  Zoom Sprite

《名称》
ASLMakeZoomSprite

《形式》
#include <farl.h>
#include <asl.h>
void ASLMakeZoomSprite(ASLsource *src, short dstX, short dstY, short scale,
                       ASLSct *sct)

《パラメータ》
src   : 描画するスプライトパターンの位置を表す構造体へのポインタ
dstX  : スプライトを描画する位置のX座標
dstY  : スプライトを描画する位置のY座標
scale : 拡大率
sct   : 生成したSCTを格納するバッファへのポインタ

《解説》
src が示すパターンを拡大・縮小して描画するSCTを、sct が示すバッファに生成しま
す。

scale には、等倍を256として拡大率を指定します。256よりも大きい値を指定すると拡
大、256よりも小さな値を指定すると縮小になります。3以上の値を指定して下さい。
0を指定すると除算エラーになり、1あるいは 2を指定するとオーバーフローにより正し
い動作をしないので注意して下さい。また、拡大によって幅や高さが 256 を越えた場
合には正常に描画する事はできません。

(dstX, dstY) は (src->x_hot, src->y_hot) が示すテクセルに対応し、拡大・縮小の
中心となります。

sct->dsp_x_pos と sct->dsp_y_pos は次のようにセットされます。

    sct->dsp_x_pos = dstX - src->x_hot * scale / 256;
    sct->dsp_y_pos = dstY - src->y_hot * scale / 256;

したがって、

    -512 ≦ ( dstX - src->x_hot * scale / 256 ) ＜ 511
    -256 ≦ ( dstY - src->y_hot * scale / 256 ) ＜ 255

となるようにパラメータを指定する必要があります。

※ asl.h をインクルードする前にシンボル ASL_USE_MACRO を定義すると、この関数は
   マクロになります。関数にした場合は関数呼びだし・戻りのためのオーバーヘッド
   がかかりますので、差し支えない限りマクロで使う事を推奨します。

《戻り値》
なし


■２．４  Rotate Sprite

《名称》
#include <farl.h>
#include <asl.h>
ASLMakeRotateSprite

《形式》
void ASLMakeRotateSprite(ASLsource *src, short dstX, short dstY, short theta,
                         ASLSct *sct)

《パラメータ》
src   :         描画するスプライトパターンの位置を表す構造体へのポインタ
dstX  :         スプライトを描画する位置のX座標
dstY  :         スプライトを描画する位置のY座標
theta :         回転角 (0〜3599)
sct   :         生成したSCTを格納するバッファへのポインタ

《解説》
src が示すパターンを回転して描画するSCTを、sct が示すバッファに生成します。

(dstX, dstY) は (src->x_hot, src->y_hot) が示すテクセルに対応し、回転の中心と
なります。

回転角 theta の単位は0.1度(degree)で、指定できる値の範囲は 0 〜 3599 (0度〜
359.9度)です。

回転によってスキャンする矩形の幅や高さが320×256を越えた場合、スキャン矩形の左
上から 256×240以下のサイズにクリップされます。描画されるスプライトが完全に画
面(便宜上320×240として計算)の外にある場合には、sct->head に ASL_VAL_FNC_NONE
を設定し、描画を行なわなくなります。

《戻り値》
なし


■２．５  Zoom and Rotate Sprite(With Z)

《名称》
ASLMakeZoomRotateSprite

《形式》
#include <farl.h>
#include <asl.h>
void ASLMakeZoomRotateSprite(ASLsource *src, short dstX, short dstY,
                             short theta, short scale,ASLSct *sct)

《パラメータ》
src   :         描画するスプライトパターンの位置を表す構造体へのポインタ
dstX  :         スプライトを描画する位置のX座標
dstY  :         スプライトを描画する位置のY座標
theta :         回転角 (0〜3599)
scale :         拡大率
sct   :         生成したSCTを格納するバッファへのポインタ

《解説》
src が示すパターンを拡大・縮小・回転して描画するSCTを、sct が示すバッファに生
成します。

(dstX, dstY) は (src->x_hot, src->y_hot) が示すテクセルに対応し、拡大・縮小・
回転の中心となります。

回転角 theta の単位は0.1度(degree)で、指定できる値の範囲は 0 〜 3599 (0度〜
359.9度)です。

scale には、等倍を256として拡大率を指定します。256よりも大きい値を指定すると拡
大、256よりも小さな値を指定すると縮小になります。3以上の値を指定して下さい。
0を指定すると除算エラーになり、1あるいは 2を指定するとオーバーフローにより正し
い動作をしないので注意して下さい。

拡大・回転などによってスキャンする矩形の幅や高さが 256×240 を越えた場合、ス
キャン矩形の左上から 256×240 以下のサイズにクリップされます。描画されるスプラ
イトが完全に画面(便宜上 320×240 として計算)の外にある場合には、sct->head に
ASL_VAL_FNC_NONE を設定し、描画を行なわなくなります。

《戻り値》
なし


■２．６ Quadrangle Sprite(WithZ)

《名称》
ASLMakeQuadrangleSprite

《形式》
#include <farl.h>
#include <asl.h>
void ASLMakeQuadrangleSprite(ASLsource *src, ASLQuadrangleParameter *param,
                             ASLPt pt[], ASLSct *sct)

《パラメータ》
src   : 描画するスプライトパターンの位置を表す構造体へのポインタ
param : 変形のためのパラメータを表す構造体へのポインタ
pt    : 生成したスキャン・パラメータ・テーブルを格納するバッファへのポインタ
sct   : 生成したSCTを格納するバッファへのポインタ

《解説》
src が示すパターンを param が示すパラメータにしたがって台形・平行四辺形状変形
して描画するSCTを sct が示すバッファに生成し、そのSCTから参照されるスキャン・
パラメータ・テーブルを pt が示すバッファに生成します。

pt が示すバッファには param->dstH 個のスキャン・パラメータ・セットを生成しま
す。あらかじめそれだけの領域が確保されていなければなりません。

src->x_hot, src->y_hot フィールドは使用しません。

HuC6273のスキャン・パラメータ・テーブルの仕様のため、この関数で変形させた形状
は上底・下底が水平なものに限られています。

変形によってスキャンする矩形の幅や高さが 256 を越えた場合には正常に描画する事
はできません。

《戻り値》
なし

＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

第３章 テーブル書き込み関数

■３．１  Set Sprite Control Table

《名称》
ASLSetSpriteTable

《形式》
#include <farl.h>
#include <asl.h>
void ASLSetSpriteTable(int bank, int sctNo, int num, ASLSct *sct)

《パラメータ》
bank  : SCTを書き込むテクスチャ・バッファのバンク番号
sctNo : 実行するSCT先頭のバンク内SCT番号 (0〜2047)
num   : 書き込むSCTの数
sct   : SCTが格納されているバッファ（複数のSCTの場合はその先頭）へのポインタ

《解説》
sct が示す num個のSCTをテクスチャ・バッファに書き込みます。bank で書き込むバン
ク番号を指定し、最初のSCTを書き込むバンク内SCT番号を sctNo で指定します。

テクスチャ・バッファの 1つのバンクは64K Bytesで、SCTは 1エントリあたり 32Bytes
ですから、1バンクあたり2048個のSCTエントリを置くことができます。SCT番号は、そ
の 2048個のSCTのインデックスで、0〜2047 を指定することができます。

バンク境界を超えて書き込むことはできません（sctNo + num ≦ 2048 でなければなり
ません）。

《戻り値》
なし


■３．２  Set Parameter Table

《名称》
ASLSetParameterTable

《形式》
#include <farl.h>
#include <asl.h>
void ASLSetParameterTable(int ptBank, int ptOffAddr, int num, ASLPt *pt)

《パラメータ》
ptBank    :     スキャン・パラメータ・テーブルを書き込むテクスチャ・バッファの
                バンク番号
ptOffAddr :     スキャン・パラメータ・テーブルを書き込む先頭のアドレス
num       :     書き込むスキャン・パラメータ・テーブルの大きさ（パラメータ数）
pt        :     スキャン・パラメータ・テーブルが格納されているバッファへのポイ
                ンタ

《解説》
pt が示す、numパラメータ（ASLPt構造体で表されるパラメータセットの数）からなる
スキャン・パラメータ・テーブルをテクスチャ・バッファに書き込みます。ptBank で
書き込むバンク番号を指定し、最初のパラメータを書き込むバンク内アドレスを
ptOffAddr で指定します。

ptOffAddr は 16Bytes境界のアドレスでなくてはなりません。テクスチャ・バッファの
1つのバンクは64K Bytesですから、ptOffAddr には 0x0000〜0xfff0 を指定することが
できます。

スキャン・パラメータ・テーブルは 1パラメータあたり 8Bytesですから、1バンクあた
り8192個のパラメータセットを置くことができます。

バンク境界を超えて書き込むことはできません（ptOffAddr + 8 * num ＜ 0x10000）で
なければなりません）。

《戻り値》
なし

＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

第４章  その他の関数

■４．１  Change H and V Flip Flag

《名称》
ASLChangeHVFlip

《形式》
#include <farl.h>
#include <asl.h>
void ASLChangeHVFlip(ASLSct *sct, Bool flipH, Bool flipV)

《パラメータ》
sct   : SCTが格納されているバッファへのポインタ
flipH : 左右反転フラグ (False または True)
flipV : 上下反転フラグ (False または True)

《解説》
sct が示すSCTの、左右・上下反転フラグを書き換えるための関数です。SCT生成関数で
はこのフラグをセットしないため、必要ならば、SCTを作成した後この関数でセットし
ます。

この関数で行なう反転は、ASLSource構造体のx_hot,y_hotを中心とした反転にはなりま
せんので、御注意下さい。

※ asl.h をインクルードする前にシンボル ASL_USE_MACRO を定義すると、この関数は
   マクロになります。関数にした場合は関数呼びだし・戻りのためのオーバーヘッド
   がかかりますので、差し支えない限りマクロで使う事を推奨します。

《戻り値》
なし


■４．２  Change Z Value

《名称》
ASLChangeZ

《形式》
#include <farl.h>
#include <asl.h>
void ASLChangeZ(ASLSct *sct, Bool zcmp, Bool zwen, unsigned short zval)

《パラメータ》
sct  :  SCTが格納されているバッファへのポインタ
zcmp :  Z値比較を行うかどうかのフラグ (False または True)
zwen :  Z値の書き込み許可フラグ (False または True)
zval :  書き込む Z値 (0x0000〜0xffff)

《解説》
sct が示すSCTの、Z値や Z操作フラグを書き換えるための関数です。
ASLMakeSpriteWithZ以外のSCT生成関数ではこれらのパラメータをSCTにセットしないた
め、必要ならば、SCTを作成した後この関数でセットします。

ASLMakeSpriteWithZ関数同様、zval、zcmp、zwen をSCTにセットします。ここで生成さ
れたSCTによるスプライト描画時には以下の動作が起こります。

zcmp が True の場合、すでにZバッファに書き込まれているZ値と zval が比較され、
zvalの方が小さい場合にはピクセル値とZ値は書き込まれません。False の場合は、比
較をせずに無条件にピクセル値とZ値が書き込まれます。

Z値が実際にZバッファに書き込まれるかどうかは zwen で決まります。zwen が True
の場合、ピクセル値がディスプレイ・バッファに書き込まれると共にZ値 zval が
Zバッファに書き込まれます。False の場合は書き込まれません。

※ asl.h をインクルードする前にシンボル ASL_USE_MACRO を定義すると、この関数は
   マクロになります。関数にした場合は関数呼びだし・戻りのためのオーバーヘッド
   がかかりますので、差し支えない限りマクロで使う事を推奨します。

《戻り値》
なし


■４．３  Change Collision Detection Flag

《名称》
ASLChangeCollisionDetection, ASLChangeCD

《形式》
#include <farl.h>
#include <asl.h>
void ASLChangeCollisionDetection(ASLSct *sct, Bool enable, Bool index,
                 unsigned short set_bits, unsigned short check_mask)

void ASLChangeCD(ASLSct *sct, Bool enable, Bool index,
                 unsigned short set_bits, unsigned short check_mask)

《パラメータ》
sct        :   SCTが格納されているバッファへのポインタ
enable     :   衝突判定を実行するかどうかのフラグ (False または True)
index      :   衝突判定の結果データ(4bit)を格納するフィールドの指定 (0〜7)
set_bits   :   衝突判定面に書き込むビットパターン(4bits)
check_mask :   衝突判定を行なう時のマスクパターン(4bits)

《解説》
sct が示すSCTの、衝突判定関連のパラメータを書き換えます。SCT生成関数ではこれら
のパラメータをセットしないため、必要ならば、SCTを作成した後この関数でセットし
ます。

set_bits は、ピクセルと共にディスプレイ・バッファの衝突判定ビット面に書き込む
4ビットのビットパターンです。このビットパターンのうち、0 であるビットは書き込
まれず、1 であるビットのみが書き込まれます。HiddenClear機能やオーバーレイ面な
どを併用する場合には、それらと競合するビットを 0 にしておく必要があります。

enable は、このスプライトを描画する際に、すでにディスプレイ・バッファに書き込
まれているピクセルに対しての衝突判定を行うかどうかを選択するフラグで、Falseな
らば判定は行わず、Trueならば判定を行います。

check_mask は、衝突判定を行う際の、衝突判定ビット面から読み込んだビットパター
ンに対するマスクパターンです。

index には、衝突判定の結果を CD result register0,1のどのフィールド
(CDRST0[3..0]〜CDRST7[3..0])に格納するかを 0〜7 の番号で指定します。

※ ASLChangeCD は ASLChangeCollisionDetection のマクロによる置き換えです。

※ asl.h をインクルードする前にシンボル ASL_USE_MACRO を定義すると、この関数は
   マクロになります。関数にした場合は関数呼びだし・戻りのためのオーバーヘッド
   がかかりますので、差し支えない限りマクロで使う事を推奨します。

《戻り値》
なし


■４．４  Clear Collision Detection Result

《名称》
ASLClearCollisionDetectionResult, ASLClearCDResult

《形式》
#include <farl.h>
#include <asl.h>
void ASLClearCollisionDetectionResult(int index, unsigned short value)

void ASLClearCDResult(int index, unsigned short value)

《パラメータ》
index : クリアする CD result registerのフィールドの指定 (0〜7)
value : クリアに使用する値

《解説》
スプライトの衝突判定結果を格納する CD Result register0,1の中の 1フィールドをク
リアします。index に、どのフィールド(CDRST0[3..0]〜CDRST7[3..0])をクリアするか
を 0〜7 の番号で指定します。

※ ASLClearCDResult は ASLClearCollisionDetectionResult のマクロによる置き換え
   です。

※ asl.h をインクルードする前にシンボル ASL_USE_MACRO を定義すると、この関数は
   マクロになります。関数にした場合は関数呼びだし・戻りのためのオーバーヘッド
   がかかりますので、差し支えない限りマクロで使う事を推奨します。

《戻り値》
なし


■４．５  Sense Collision Detection Result

《名称》
ASLSenseCollisionDetectionResult, ASLSenseCDResult

《形式》
#include <farl.h>
#include <asl.h>
unsigned short ASLSenseCollisionDetectionResult(int index)

unsigned short ASLSenseCDResult(int index)

《パラメータ》
index : 読み出す CD result registerのフィールドの指定 (0〜7)

《解説》
スプライトの衝突判定結果が格納されている CD result register0,1の中の 1フィール
ドを読み出します。index に、どのフィールド(CDRST0[3..0]〜CDRST7[3..0])を読み出
すかを 0〜7 の番号で指定します。

※ ASLSenseCDResult は ASLSenceCollisionDetectionResult のマクロによる置き換え
   です。

※ asl.h をインクルードする前にシンボル ASL_USE_MACRO を定義すると、この関数は
   マクロになります。関数にした場合は関数呼びだし・戻りのためのオーバーヘッド
   がかかりますので、差し支えない限りマクロで使う事を推奨します。

《戻り値》
CD result register の index で指定したフィールドの読み出し結果


■４．６  Set Sprite Clip Window

《名称》
ASLSetSpriteWindow

《形式》
#include <farl.h>
#include <asl.h>
void ASLSetSpriteWindow(unsigned short left, unsigned short top,
                        unsigned short right, unsigned short bottom)

《パラメータ》
left   :        矩形ウインドウの左上のX座標
top    :        矩形ウインドウの左上のY座標
right  :        矩形ウインドウの右下のX座標
bottom :        矩形ウインドウの右下のY座標

《解説》
Sprite window clip registerに left, top, right, bottom で表される矩形ウインド
ウを設定します。スプライトはこのレジスタに設定された矩形ウインドウの内部にのみ
描画されます。

※ asl.h をインクルードする前にシンボル ASL_USE_MACRO を定義すると、この関数は
   マクロになります。関数にした場合は関数呼びだし・戻りのためのオーバーヘッド
   がかかりますので、差し支えない限りマクロで使う事を推奨します。

《戻り値》
なし


■４．７  Execute Sprite

《名称》
ASLExecuteSprite

《形式》
#include <farl.h>
#include <asl.h>
void ASLExecuteSprite(int bank, int sctNo, int num)

《パラメータ》
bank  : 実行するSCTのあるテクスチャ・バッファのバンク番号
sctNo : 実行するSCT先頭のバンク内SCT番号 (0〜2047)
num   : 実行するSCTの数

《解説》
テクスチャ・バッファに書き込まれたSCTを実行します。実行する先頭のSCTのバンク番
号を bank に、バンク内SCT番号(0〜2047)を sctNo に、実行するSCTの数を num に指
定します。num に指定できる個数の範囲は 0〜2047 で、0 は 2048個を意味します。
指定した個数のSCTがバンク境界をまたがっていてもかまいません。

※ asl.h をインクルードする前にシンボル ASL_USE_MACRO を定義すると、この関数は
   マクロになります。関数にした場合は関数呼びだし・戻りのためのオーバーヘッド
   がかかりますので、差し支えない限りマクロで使う事を推奨します。

《戻り値》
なし


■４．８  Synchonize

《名称》
ASLSync

《形式》
#include <farl.h>
#include <asl.h>
void ASLSync()

《パラメータ》
なし

《解説》
スプライトの描画動作が終るのを待ち合わせます。

HuC6273では3Dエンジン部とスプライトエンジン部は非同期に作動しているため、バッ
ファをスワップする時にはスプライトの描画終了を待ち合わせる必要があります。

※ asl.h をインクルードする前にシンボル ASL_USE_MACRO を定義すると、この関数は
   マクロになります。関数にした場合は関数呼びだし・戻りのためのオーバーヘッド
   がかかりますので、差し支えない限りマクロで使う事を推奨します。

《戻り値》
なし


■４．９  Wait for Swap

《名称》
ASLWaitForSwap

《形式》
#include <farl.h>
#include <asl.h>
void ASLWaitForSwap()

《パラメータ》
なし

《解説》
HuC6273のスワップ動作が終るのを待ち合わせます。

HuC6273では3Dエンジン部とスプライトエンジン部は非同期に作動しているため、バッ
ファをスワップするコマンドを発行した後、次のフレームのスプライト描画を開始する
際には、スワップおよびクリア動作が終了するまで待ち合わせる必要があります。

《戻り値》
なし


＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

《著作権及び登録商標等》

・LIBASL.A 及び LIBASL.TXT（以下、"本ソフトウェア"という）は、ＰＣ−ＦＸＧＡ用
  のソフトウェア開発ツールの一部です。本ソフトウェアを、ＰＣ−ＦＸ、ＰＣ−ＦＸ
  ＧＡ用のソフトウェア開発以外の目的で使用しないで下さい。

・本ソフトウェアを使用した結果、直接及び間接的に生じた損害について、株式会社ハ
  ドソンは、一切の責任または債務を負わないものとします。

・本ソフトウェアの操作方法、技術的内容、その他の質問について、株式会社ハドソン
  では、直接お答えしていません。お問い合わせはご遠慮下さい。

・本ソフトウェアの使用に際し、「ソフトウェアのご使用条件」をよくご覧いただき、
  ご利用下さいますようお願い致します。


MS-DOSは米国マイクロソフト社の登録商標です。
その他、記載されている会社名、製品名は、各社の登録商標または商標です。


                                                           (C)1995 HUDSON SOFT
                                                           (C)1995 KUBOTA CORP.

